// 显示应用信息到页面
function showInfo() {
    document.getElementById('info').innerHTML = `${NL_APPID} is running on port ${NL_PORT}
        inside ${NL_OS}<br/><br/><span>v${NL_VERSION}</span>`;
}

// 打开 Neutralino 官方文档
function openDocs() {
    Neutralino.os.open("https://neutralino.js.org/docs");
}

// 在默认浏览器中打开当前页面
function openInBrowser() {
    Neutralino.os.open(window.location.href);
}

// 初始化 Neutralino
Neutralino.init();
if(NL_MODE == "window") {
    // 设置窗口标题（当 WebSocket 连接后会处理该请求）
    Neutralino.window.setTitle("Test app");
}

// 向扩展发送事件（当扩展连接后会处理该请求）
Neutralino.extensions.dispatch("js.neutralino.sampleextension", "eventToExtension", "Hello extension!")
    .catch((err) => {
        console.log("Extension isn't loaded!");
    });

// 监听窗口关闭事件，关闭应用
// Neutralino.events.on("windowClose", () => {
//     Neutralino.app.exit();
// });

// 监听来自扩展的事件
Neutralino.events.on("eventFromExtension", (evt) => {
    console.log(`INFO: Test extension said: ${evt.detail}`);
});

// 在页面加载时显示应用信息
showInfo();

// 监听浏览器窗口关闭事件，弹出确认框，确认后关闭 Neutralino 服务
window.addEventListener('beforeunload', function (e) {
    // 标准浏览器下弹出确认框
    const confirmationMessage = '确定要关闭应用并退出服务吗？';
    // 现代浏览器会忽略自定义消息，但依然会弹出默认提示
    e.preventDefault();
    e.returnValue = confirmationMessage;
    // 兼容部分浏览器，弹窗确认后关闭 Neutralino 服务
    if(window.confirm(confirmationMessage)) {
        Neutralino.app.exit();
    }
    // 否则什么都不做，阻止关闭
    return false;
});
